4
תגובות

מידלוורס בלארוול החדש

פתח hadash ,
בגרסה החדשה של לארוול, 5.2 , המידלוורס לא באים כמובנים ואפשר להחליט אם להשתמש בהם או לא. קיבצו אותם לקבוצה בשם web כדי להקל על השימוש ומי שלא משתמש בקבוצה הזו זה פשוט לא טוען את המידלוורס בכל ניתוב.
השאלה שלי היא, האם אני אצטרך פשוט להכניס הכל בתוך הקבוצה? ולעשות גם קבוצות בתוך קבוצות וכל זה? או שיש דרך להפעיל את זה פשוט כמו ב5.1 שזה יפעל אוטומטית בכל ניתוב בלי שזה יברור מה כן או מה לא?

4 תשובות

avatar ענה intval ב 23 לדצמבר 2015 #

כל עוד אתה משתמש באוטולואדינג, רק הקוד שמופעל עומד להיטען ואתה לא צריך לעשות שום דבר בעצמך או לדאוג שמי שלא צריך משהו עלול לטעון משהו מיותר.

avatar ענה hadash ב 23 לדצמבר 2015 #

@intval לא כל כך הבנתי את התשובה, רק אתן דוגמה(שככה הבנתי עוד יותר מה הכוח או יותר נכון התועלת של המידלוורס), השתמש בcsrf token , וכשהניתוב היה בלי שימוש בweb - אז הייתה לי שגיאה והטוקן לא היה מופיע אבל כשהכנסתי את הניתוב לקבוצה הזו הטוקן הופיע והכל היה סבבה.

avatar ענה OrelBeY ב 26 לדצמבר 2015 #

אין חיוב להשתמש בקבוצות Middleware. השינוי בלארוול 5.2 הוא בדיוק כמו שאמרת:

1. ביטול שיוך Middleware לנתבים באופן אוטומטי.
2. הוספת קבוצות Middleware וביניהן קבוצה מובנית web שכוללת את כל ה-Middlewares שהיו משויכים אוטומטית לפני כן.

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
    ],
];


ה-Middlewares עדיין באים עם לארוול. כדי להשתמש בתיקוף CSRF המובנה תצטרך להוסיף ידנית לנתב את \App\Http\Middleware\VerifyCsrfToken::class, או להוסיף לו שם קיצור (Middleware), או להכניס אותו לקבוצה חדשה או להשתמש בקבוצה קיימת שהוא נמצא בה (כמו web).

שים לב שבנוסף ל-CSRF, כל מה שקשור לעוגיות, לסשנים ול-Middlwares האחרים שבאים עם לארוול, אם לא תוסיף אותם ידנית לנתבים שלך (בנפרד או כחלק מקבוצה כמו web) - הם לא יפעלו.

avatar ענה hadash ב 27 לדצמבר 2015 #

OrelBeY@ הכוונה שלי הייתה אם אפשר לבטל את השימוש ידנית במידלוורס ולגרום להם לפעול באופן אוטומטי. או שזה מה שבעצם השתנה בלארוול 5.2.

עריכה :
בקרנל,(app/http/kernel.php) יש את המאפיין middlewaresGroups ששם מוגדרת בעצם הקבוצה web. מה ששמתי לב עכשיו זה שמעל המאפיין הזה יש את המאפיין middleware שהתיאור שלו הוא: The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
לפי מה שאני מבין, זה אומר בדיוק את מה שאני מחפש. מידלוורס שיפעלו בכל בקשה לשרת.
פשוט להוסיף לשם את המידלרווס שאני רוצה שיפעלו בכל בקשה? שזה בעצם הקבוצה web? או שעדיף לי לא להשתמש בהם בכל בקשה, אם עדיף שלא אשמח להסבר כדי שאבין טוב יותר :)
תודה רבה